package main
import (
	"fmt"
	"encoding/json"
)
//map、切片、结构体的序列化~
func main(){
	fmt.Println("演示对struct的序列化~")
	testStruct()
	fmt.Println("演示对map的序列化~")
	testmap()
	fmt.Println("演示对slice的序列化~")
	testSlice()
}


type Person struct{
	Name string
	Age int
	Birthday string
	Sal float64
}
//将这个结构体进行序列化！
func testStruct(){
	person := Person{
		Name : "fmx",
		Age : 22,
		Birthday : "1999-06-24",
		Sal : 12000.0,
	}
	//通过 func Marshal(v interface{}) ([]byte, error) 进行序列化！
	data , err := json.Marshal(&person)
	if err != nil{
		fmt.Println("序列化失败！Error：",err)
	}
	fmt.Printf("序列化结果：%v\n",string(data))
}

//将Map进行序列化！
func testmap(){
	var kvmap map[string]interface{}
	kvmap = make(map[string]interface{})
	kvmap["name"] = "fmx"
	kvmap["age"] = 22
	kvmap["sal"] = 12000.0
	//通过 func Marshal(v interface{}) ([]byte, error) 进行序列化！
	data , err := json.Marshal(kvmap)
	if err != nil{
		fmt.Println("序列化失败！Error：",err)
	}
	fmt.Printf("序列化结果：%v\n",string(data))
}

////将切片进行序列化！
func testSlice(){
	var slice []map[string]interface{}
	var m1 = make(map[string]interface{})
	m1["name"]="fmx"
	m1["age"]=22
	m1["sal"]=12000.0
	var m2 = make(map[string]interface{})
	m2["name"]="lsx"
	m2["age"]=22
	m2["sal"]=10000.0
	slice = append(slice,m1,m2)

	//通过 func Marshal(v interface{}) ([]byte, error) 进行序列化！
	data , err := json.Marshal(slice)
	if err != nil{
		fmt.Println("序列化失败！Error：",err)
	}
	fmt.Printf("序列化结果：%v",string(data))
}